<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>部门管理</title>
<%@include file="/jsp/include/common.jsp"%>
</head>
<body class="easyui-layout">
	<%@include file="/jsp/include/commonLayout.jsp"%>
	<div data-options="region:'center'">
		<div>
			<!-- 数据表格  -->
			<table id="treeGrid"></table>
			<!-- 添加或编辑命令的弹出窗口 begin -->
			<div id="saveOrEditDlg" class="easyui-dialog"
				style="width: 400px; height: 280px; padding: 10px 10px"
				closed="true" buttons="#dlg-buttons" data-options="modal:true">
				<form id="saveOrEditForm" method="post">
					<table>
						<tr>
							<td>名称:</td>
							<td><input name="oname" class="easyui-textbox"></td>
						</tr>
						<tr>
							<td>描述:</td>
							<td><input name="odesc" class="easyui-textbox"></td>
						</tr>
						<tr>
							<td>所属部门ID:</td>
							<td><input id="parentId" name="parent" class="easyui-textbox" data-options="readonly:true"></td>
						</tr>
					</table>
					<input type="hidden" name="oid"/>
				</form>
			</div>
			<div id="dlg-buttons">
				<a class="easyui-linkbutton" iconCls="icon-ok"
					onclick="cleanParentId()">清除父节点</a>
				<a class="easyui-linkbutton" iconCls="icon-ok"
					onclick="saveOrEditAction()">保存</a>
				<a class="easyui-linkbutton"
					iconCls="icon-cancel"
					onclick="javascript:$('#saveOrEditDlg').dialog('close')">取消</a>
			</div>
			<!-- 添加或编辑命令的弹出窗口 end -->
		</div>
		
		<!-- 部门用户管理 -->
		<div id="userManageWindow" class="easyui-window" data-options="title:'管理用户',closed:true,modal:true,width:700,height:500">
			<div style="height: 50%">
				<table id="departmentHaveUserTable"></table>
			</div>
			<div style="height: 50%">
				<table id="departmentNotHaveUserTable"></table>
			</div>
		</div>
		
		<!-- 部门命令管理 -->
		<div id="actionManageWindow" class="easyui-window" data-options="title:'管理命令',closed:true,modal:true,width:700,height:500">
			<table id="resourceTable"></table>
		</div>
	</div>
</body>
<script type="text/javascript">
	$(document).ready(
	function() {
		// 添加验证
		$("#roleName").textbox({
			required : true, //定义为必填字段
		});

		// 初始化表格
		var treeGrid = $('#treeGrid').treegrid({
							fitColumns : true, //真正的自动展开/收缩列的大小，以适应网格的宽度，防止水平滚动
							//fit : true,
							rownumbers : true, //如果为true，则显示一个行号列
							collapsible : true, //定义是否显示可折叠按钮
							title : '部门信息管理', //在面板头部显示的标题文本
							method : 'post', //该方法类型请求远程数据
							nowrap : false, //如果为true，则在同一行中显示数据。设置为true可以提高加载性能。
							url : getRootPath() + '/DepartmentController/getDepartmentList.do', //一个URL从远程站点请求数据
							singleSelect : false,//只能选一行
							striped : true, //数据条纹显示
							idField : 'id',//唯一标识列
							treeField:'oname',
							frozenColumns : [ [ {//不可被删除的列
								field : 'ck', //列字段名称
								checkbox : true
							//如果为true，则显示复选框
							} ] ],
							columns : [ [{
								field : 'id',
								title : 'ID',
								width : 200
							}, {
								field : 'oname',
								title : '部门名称',
								width : 200
							}, {
								field : 'odesc',
								title : '描述',
								width : 200
							}] ],
							toolbar : [
									{ //顶部工具栏的treeGrid面板
										text : '添加',
										iconCls : 'icon-add',
										handler : function() {
											$('#saveOrEditForm').form('clear');
											$('#parentId').textbox("readonly",true);
											var rows = $('#treeGrid').treegrid('getSelections');
											if (rows.length == 0) {
												$("#parentId").textbox("setText","");
												$("#parentId").textbox("setValue","");
											} else if (rows.length > 1) {
												$.messager.alert('提示','只能选择一项','info');
												return;
											}
											
											$('#saveOrEditDlg').dialog('open').dialog('setTitle','新建部门');
											$("#parentId").textbox("setText",rows[0].id);
											$("#parentId").textbox("setValue",rows[0].id);
										}
									},
									{
										text : '编辑',
										iconCls : 'icon-edit',
										handler : function() {
											var rows = $('#treeGrid').treegrid('getSelections');
											if (rows.length == 0) {
												$.messager.alert('提示','请选择修改项','info');
												return;
											} else if (rows.length > 1) {
												$.messager.alert('提示','只能选择一项','info');
												return;
											}
											var oid = rows[0].id;
											if (rows) {
												$('#saveOrEditDlg').dialog('open').dialog('setTitle','编辑部门信息');
												$.ajax({
															type : 'post',
															async : false,
															url : getRootPath() + '/DepartmentController/findDepartmentById.do',
															data : {"oid":oid},
															success : function(result) {
																if(result!=null){
																	$('#saveOrEditForm').form('load',result);
																}
															},
															dataType : 'json'
														});
											}
										}
									},
									{
										text : '删除',
										iconCls : 'icon-remove',
										handler : function() {
											var rows = $('#treeGrid').treegrid('getSelections');
											if (rows.length == 0) {
												$.messager.alert('提示','请选择删除项','info');
												return;
											}

											var oids = [];
											for (var i = 0; i < rows.length; i++) {
												oids.push(rows[i].id);
											}

											oids = oids.join('-');

											$.messager.confirm('确认','确定要删除选中的信息吗?',
												function(r) {
													if (r) {
														//删除数据库中的数据之前一定要先删除页面的数据
														for (var i = 0; i < rows.length; i++) {
															$('#treeGrid').treegrid("remove",rows[i].id);
														}
														
														$.post(getRootPath() + '/DepartmentController/removeDepartmentItems.do',
															{'oids' : oids},
															function(result) {
																//result = $.parseJSON(result);
																if (result.successful) {
																	$('#treeGrid').treegrid('reload'); // reload the user data
																}
																$.messager.show(result);
															},
															'json');
													}
												});
											$('#treeGrid').treegrid('clearSelections');
										}
									},"-",{
										text :"管理用户",
										handler : function(){
											var rows = $('#treeGrid').treegrid('getSelections');
											if (rows.length == 0) {
												$.messager.alert('提示','请选择操作项','info');
												return;
											} else if (rows.length > 1) {
												$.messager.alert('提示','只能选择一项','info');
												return;
											}
											depId = rows[0].id;
											//console.info(id);
											
											// 部门包含的用户列表 -begin //
											$('#departmentHaveUserTable').datagrid({
												fit:true,
												fitColumns : true,
												title : '部门包含用户列表',
												nowrap : false,
												striped : true, //数据条纹显示
												collapsible : true,
												singleSelect : false,
												queryParams : {'depId':depId},
												url : '<%=request.getContextPath()%>/UserinfoController/getDepartmentHaveUserList.do',
												sortName : 'oid',
												remoteSort : true,
												idField : 'oid',//唯一标识列
												frozenColumns : [ [ {//不可被删除的列
													field : 'ck',
													checkbox : true
												}, {
													title : '标识',
													field : 'oid',
													width : 80,
													sortable : true
												} ] ],
												columns : [ [ {
													field : 'oname',
													title : '名称',
													width : 120,
													sortable : true
												}, {
													field : 'odesc',
													title : '描述',
													width : 240,
													sortable : true
												} ] ],
												pagination : true,
												rownumbers : true,
												toolbar : [{
													id : 'btndelete',
													text : '删除',
													iconCls : 'icon-remove',
													handler : function() {
														var rows = $('#departmentHaveUserTable').datagrid('getSelections');
														if (rows.length == 0) {
															$.messager.alert('提示','请选择删除项','info');
															return;
														} 
														
														var oids = [];
														for(var i=0;i<rows.length;i++){
															oids.push(rows[i].oid);
														}
														oids = oids.join('-');
														
														$.messager.confirm('确认', '确定要删除选中的信息吗?', function(r) {
															if (r) {
																$.post(getRootPath() + '/UserinfoController/removeDepartmentHaveUser.do', {
																	'depId':depId,
																	'userids' : oids
																}, function(result) {
																	//result = $.parseJSON(result);
																	if (result.successful) {
																		$('#departmentHaveUserTable').datagrid('reload'); // reload the user data
																		$('#departmentNotHaveUserTable').datagrid('reload'); // reload the user data
																	} 
																	$.messager.show(result);
																}, 'json');
															}
														});
													}
												}]
											});
											// 部门包含的用户列表  -end //
											
											// 部门可添加的用户列表  - begin //
											$('#departmentNotHaveUserTable').datagrid({
												fit:true,
												fitColumns : true,
												title : '部门可添加用户列表',
												nowrap : false,
												striped : true, //数据条纹显示
												collapsible : true,
												singleSelect : false,//只能选一行
												queryParams : {'depId':depId},
												url : '<%=request.getContextPath()%>/UserinfoController/getDepartmentNotHaveUserList.do',
												sortName : 'oid',
												remoteSort : true,
												idField : 'oid',//唯一标识列
												frozenColumns : [ [ {//不可被删除的列
													field : 'ck',
													checkbox : true
												}, {
													title : '标识',
													field : 'oid',
													width : 80,
													sortable : true
												} ] ],
												columns : [ [ {
													field : 'oname',
													title : '名称',
													width : 120,
													sortable : true
												}, {
													field : 'odesc',
													title : '描述',
													width : 240,
													sortable : true
												} ] ],
												pagination : true,
												rownumbers : true,
												toolbar : [ {
													id : 'btnadd',
													text : '添加',
													iconCls : 'icon-add',
													handler : function() {
														var rows = $('#departmentNotHaveUserTable').datagrid('getSelections');
														if (rows.length == 0) {
															$.messager.alert('提示','请选择添加项','info');
															return;
														} 
														
														var oids = [];
														for(var i=0;i<rows.length;i++){
															oids.push(rows[i].oid);
														}
														
														oids = oids.join('-');
														
														$.messager.confirm('确认添加项', '确认添加该选项', function(r) {
															if (r) {
																$.post(getRootPath() + '/UserinfoController/addDeparmentNotHaveUser.do', {
																	'depId':depId,
																	'userids' : oids
																}, function(result) {
																	//result = $.parseJSON(result);
																	if (result.successful) {
																		$('#departmentHaveUserTable').datagrid('reload'); // reload the user data
																		$('#departmentNotHaveUserTable').datagrid('reload'); // reload the user data
																	} 
																	$.messager.show(result);
																}, 'json');
															}
														});
													}
												}]
											});
											// 部门可添加的用户列表 - end //
											
											$('#userManageWindow').window('open');
										}
									},'-',{
										text : '管理命令',
										handler : function(){
											var rows = $('#treeGrid').treegrid('getSelections');
											if (rows.length == 0) {
												$.messager.alert('提示','请选择操作项','info');
												return;
											} else if (rows.length > 1) {
												$.messager.alert('提示','只能选择一项','info');
												return;
											}
											depId = rows[0].id;
											
											$('#resourceTable').treegrid({
												fit : true,
												fitColumns : true,
												nowrap : false,
												striped : true, //数据条纹显示
												collapsible : true,
												singleSelect : false,//只能选一行
												queryParams : {'depId':depId},
												url : '<%=request.getContextPath()%>/ActionController/getActionsByDeptId.do',
												idField : 'id',//唯一标识列
												treeField:'oname',
												frozenColumns : [ [ {//不可被删除的列
													field : 'ck',
													checkbox : true
												}] ],
												columns : [ [ {
													field : 'oname',
													title : '名称',
													width : 240
												}, {
													field : 'url',
													title : '路径',
													width : 200
												} ] ],
												rownumbers : true,
												animate:true,
												toolbar : [ {
													text : '保存',
													iconCls : 'icon-save',
													handler : function() {
													
													var nodes = $('#resourceTable').treegrid('getSelections');
													var checkedIds = '';
													for(var i=0; i<nodes.length; i++){
														checkedIds += nodes[i].id +',';
													}
													
													$.post(getRootPath() + '/ActionController/updateDeptActions.do', {
														'deptId':depId,
														'checkedIds' : checkedIds
													}, function(result) {
														//result = $.parseJSON(result);
														if (result.successful) {
															$('#resourceTable').datagrid('reload'); // reload the user data
														} 
														$.messager.show(result);
													}, 'json');
													}
												}],
												onLoadSuccess: function(){
													var nodes = $('#resourceTable').treegrid('getChildren');
													for(var i=0; i < nodes.length; i++) {
														if (nodes[i].checked != null) {
															if (nodes[i].checked) {
																$('#resourceTable').treegrid('select', nodes[i].id);
															}
														}
													}
												}
											});
											
											$('#actionManageWindow').window('open');
										}
									} ]
						});

	});

	// 保存部门
	function saveOrEditAction() {
		$('#saveOrEditForm').form('submit', {
			url : getRootPath() + '/DepartmentController/saveDepartmentItem.do',
			onSubmit : function() {
				return $(this).form('validate');
			},
			success : function(result) {
				result = $.parseJSON(result);
				if (result.successful) {
					$('#treeGrid').treegrid('reload'); // reload the user data
				}
				$('#saveOrEditDlg').dialog('close'); // close the dialog
				$.messager.show(result);
				$('#treeGrid').treegrid('clearSelections');
			}
		});
	}
	
	//清除父节点
	function cleanParentId(){
		$('#parentId').textbox("readonly",false);
		$('#parentId').textbox('clear');
	}
</script>
</html>
